<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script src="../public.js"></script>
<script>
    //三个接口：

    //http://api.k780.com/?app=weather.realtime&weaId=1&ag=today,futureDay,lifeIndex,futureHour&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json

    //http://api.k780.com/?app=idcard.get&idcard=110101199001011114&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json

    //http://api.k780.com/?app=phone.get&phone=13800138000&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json

    //Promise.all()：用于将多个 Promise 实例，包装成一个新的 Promise 实例，接受一个数组作为参数，只有数组里面的每个状态都变成resolve，则新的 Promise 实例状态才会变成resolve.

    // 案例： 同时请求三个接口的数据， 如果任一个接口出现错误， 里面结束。
    // let newpromise = Promise.all([ //只有数组里面的每个状态都变成resolve，则新的 Promise 实例状态才会变成resolve
    //     $ajaxpromise({
    //         url: 'http://api.k780.com/?app=weather.realtime&weaId=1&ag=today,futureDay,lifeIndex,futureHour&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json'
    //     }),
    //     $ajaxpromise({
    //         url: 'http://api.k780.com/?app=idcard.get&idcard=110101199001011114&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json'
    //     }),
    //     $ajaxpromise({
    //         url: 'http://api.k780.com/?app=phone.get&phone=13800138000&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json'
    //     })
    // ]);

    // newpromise.then((datas) => { //将多个接口的数据放到数组中返回，
    //     console.log(datas);
    // }).catch((err) => {
    //     console.log('接口地址有误' + err);
    // });

    // Promise.race()：方法同样是将多个 Promise 实例，包装成一个新的 Promise 实例，接受一个数组作为参数， 只要其中有一个实例率先改变状态， 则整个的状态就跟着改变(赛跑，谁快跟着谁走)
    let p1 = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve();
        }, 1000)
    });

    let p2 = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject();
        }, 2500)
    });

    let p3 = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve();
        }, 1500)
    });

    let newpromise = Promise.race([p1, p2, p3]);

    newpromise.then(() => {
        console.log('成功');
    }).catch(() => {
        console.log('失败');
    })
</script>